//
//  ZKJNetWorkTool.h
//  Delicious
//
//  Created by dllo on 15/12/1.
//  Copyright © 2015年 ZKJ. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <AFNetworking.h>

// 请求成功的block类型
typedef void(^SuccessBlock)(id);
// 请求失败的block类型
typedef void(^FailBlock)(NSError *);

// 返回值类型
typedef NS_ENUM(NSUInteger, ResponseType) {
    ResponseTypeJSON,
    ResponseTypeXML,
    ResponseTypeDATA,
};

// body类型
typedef NS_ENUM(NSUInteger, BodyType) {
    BodyTypeString,
    BodyTypeDictionary,
};

@interface ZKJNetWorkTool : NSObject

/**
 *  计算高度
 *
 *  @param value    string
 *  @param fontSize 字体大小
 *  @param width    宽度
 *
 *  @return 高度
 */
+ (CGFloat) heightForString:(NSString *)value fontSize:(CGFloat)fontSize andWidth:(CGFloat)width;

/**
 *  计算单个文件大小
 *
 *  @param path 文件路径
 *
 *  @return 文件大小
 */
+ (float)fileSizeAtPath:(NSString *)path;

/**
 *  计算文件夹大小
 *
 *  @param path 文件夹路径
 *
 *  @return 文件夹大小
 */
+ (float)folderSizeAtPath:(NSString *)path;

/**
 *  清理缓存
 *
 *  @param path 缓存路径
 */
+ (void)clearCache:(NSString *)path;

/**
 *  GET网络请求
 *
 *  @param url          URL
 *  @param parameter    参数
 *  @param header       请求头
 *  @param responseType 返回值类型
 *  @param success      成功
 *  @param fail         失败
 */
+ (void)getWithUrl:(NSString *)url parameter:(NSDictionary *)parameter httpHeader:(NSDictionary *)header responseType:(ResponseType)responseType success:(SuccessBlock)success fail:(FailBlock)fail;

/**
 *  POST网络请求
 *
 *  @param url          URL
 *  @param body         body
 *  @param bodyType     body类型
 *  @param header       请求头
 *  @param responseType 返回值类型
 *  @param success      成功
 *  @param fail         失败
 */
+ (void)postWithUrl:(NSString *)url body:(id)body bodyType:(BodyType)bodyType httpHeader:(NSDictionary *)header responseType:(ResponseType)responseType success:(SuccessBlock)success fail:(FailBlock)fail;

@end
